// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package de.greenrobot.dao.internal; import android.database.sqlite.SQLiteDatabase; import de.greenrobot.dao.DaoException; import de.greenrobot.dao.Property; import de.greenrobot.dao.identityscope.IdentityScope; import de.greenrobot.dao.identityscope.IdentityScopeLong; import de.greenrobot.dao.identityscope.IdentityScopeObject; import de.greenrobot.dao.identityscope.IdentityScopeType; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; // Referenced classes of package de.greenrobot.dao.internal: // TableStatements public final class DaoConfig implements Cloneable { public final String allColumns[]; public final SQLiteDatabase db; private IdentityScope identityScope; public final boolean keyIsNumeric; public final String nonPkColumns[]; public final String pkColumns[]; public final Property pkProperty; public final Property properties[]; public final TableStatements statements; public final String tablename; public DaoConfig(SQLiteDatabase sqlitedatabase, Class class1) { int i; Property property; boolean flag; Property property1; db = sqlitedatabase; Property aproperty[]; ArrayList arraylist; ArrayList arraylist1; Class class2; String s; try { tablename = (String)class1.getField("TABLENAME").get(null); aproperty = reflectProperties(class1); properties = aproperty; allColumns = new String[aproperty.length]; arraylist = new ArrayList(); arraylist1 = new ArrayList(); } catch (Exception exception) { throw new DaoException("Could not init DAOConfig", exception); } i = 0; property = null; _L2: if (i >= aproperty.length) { break MISSING_BLOCK_LABEL_141; } property1 = aproperty[i]; s = property1.columnName; allColumns[i] = s; if (property1.primaryKey) { arraylist.add(s); break MISSING_BLOCK_LABEL_356; } arraylist1.add(s); property1 = property; break MISSING_BLOCK_LABEL_356; nonPkColumns = (String[])arraylist1.toArray(new String[arraylist1.size()]); pkColumns = (String[])arraylist.toArray(new String[arraylist.size()]); if (pkColumns.length != 1) { property = null; } pkProperty = property; statements = new TableStatements(sqlitedatabase, tablename, allColumns, pkColumns); if (pkProperty == null) { break MISSING_BLOCK_LABEL_338; } class2 = pkProperty.type; if (class2.equals(Long.TYPE) || class2.equals(java/lang/Long) || class2.equals(Integer.TYPE) || class2.equals(java/lang/Integer) || class2.equals(Short.TYPE) || class2.equals(java/lang/Short) || class2.equals(Byte.TYPE) || class2.equals(java/lang/Byte)) { flag = true; } else { flag = false; } keyIsNumeric = flag; return; keyIsNumeric = false; return; i++; property = property1; if (true) goto _L2; else goto _L1 _L1: } public DaoConfig(DaoConfig daoconfig) { db = daoconfig.db; tablename = daoconfig.tablename; properties = daoconfig.properties; allColumns = daoconfig.allColumns; pkColumns = daoconfig.pkColumns; nonPkColumns = daoconfig.nonPkColumns; pkProperty = daoconfig.pkProperty; statements = daoconfig.statements; keyIsNumeric = daoconfig.keyIsNumeric; } private static Property[] reflectProperties(Class class1) { Field afield[] = Class.forName((new StringBuilder()).append(class1.getName()).append("$Properties").toString()).getDeclaredFields(); ArrayList arraylist = new ArrayList(); int i = afield.length; for (int j = 0; j < i; j++) { Field field = afield[j]; if ((9 & field.getModifiers()) != 9) { continue; } Object obj = field.get(null); if (obj instanceof Property) { arraylist.add((Property)obj); } } Property aproperty[] = new Property[arraylist.size()]; for (Iterator iterator = arraylist.iterator(); iterator.hasNext();) { Property property = (Property)iterator.next(); if (aproperty[property.ordinal] != null) { throw new DaoException("Duplicate property ordinals"); } aproperty[property.ordinal] = property; } return aproperty; } public DaoConfig clone() { return new DaoConfig(this); } public volatile Object clone() { return clone(); } public IdentityScope getIdentityScope() { return identityScope; } public void initIdentityScope(IdentityScopeType identityscopetype) { if (identityscopetype == IdentityScopeType.None) { identityScope = null; return; } if (identityscopetype == IdentityScopeType.Session) { if (keyIsNumeric) { identityScope = new IdentityScopeLong(); return; } else { identityScope = new IdentityScopeObject(); return; } } else { throw new IllegalArgumentException((new StringBuilder()).append("Unsupported type: ").append(identityscopetype).toString()); } } public void setIdentityScope(IdentityScope identityscope) { identityScope = identityscope; } }